// 本机地址需要查询
const http = require('http')
const fs = require('fs')
const url = require("url")

// 引入json伪数据
// let mockData = require('/www/wwwroot/myWeb/login/usersData.json')
/*
[
  { username: 'kasha', password: 'kasha' },
  { username: 'shamila', password: 'shamila' },
  { username: 'geleifusi', password: 'geleifusi' }
]
*/

// 创建服务器
const server = http.createServer((req, res) => { })
// 设置服务端口
server.listen(9999, function () {
    console.log('***** 服务正在9999端口上运行... *****')
})
// 配置服务器动作
server.on('request', function (request, response) {
    console.log('***** 收到客户端的请求 *****')
    // 获取浏览器url地址
    let objTemp = url.parse(request.url, true).query
    // 输入不为空，则服务器有返回
    if (objTemp.username !== undefined && objTemp.passwd !== undefined) {
        obj = objTemp
        // 点击注册的用户名会带$标志,进下面的if
        if ((obj.username).indexOf('$') === 0) {
            // 去掉注册标志
            obj.username = (obj.username).replace('$', '')
            let objR = {}   //新建用户名密码对象
            objR.username = obj.username
            objR.password = obj.passwd
            // mockData.push(objR) //将新建的用户名密码对象加入数据

            // 将临时数据写入json文件
            // 先将json数据读取出来并转化为js数据
            let file001 = fs.readFileSync('/www/wwwroot/myWeb/login/usersData.json', 'utf8')
            // console.log('001文件数据为',file001)
            // console.log('001文件数据类型为',typeof file001)
            let file002 = JSON.parse(file001)
            // console.log('002数据为',file002)
            // console.log('002文件数据类型为', file002 instanceof Array )
            // 将新加的用户名密码加入js数据
            file002.push(objR)
            // console.log('002加入新数据后为', file002)
            // 将新的js数据转化为json数据并写入json文件
            let file003 = JSON.stringify(file002)
            // console.log('004此时json数据为', file003,'004数据类型为', typeof file003)
            fs.writeFileSync('/www/wwwroot/myWeb/login/usersData.json', file003)
            

            console.log('注册成功，新账号为:')
            console.log(objR)

            // 服务器响应注册成功
            response.writeHead(200, { 'Content-Type': 'text/html' })
            fs.readFile('/www/wwwroot/myWeb/login/index.html', 'utf-8', function (err, data) {
                response.write(`<script> alert("##### 注册成功，用户名:${objR.username}密码:${objR.password} #####") </script>`)
                console.log('***** 注册请求结束 *****')
                response.end(data)
            })
        } else {
            // 点击登录的用户名不带$标识,进下面的if
            // 服务器返回信息
            response.writeHead(200, { 'Content-Type': 'text/html' })
            fs.readFile('/www/wwwroot/myWeb/login/index.html', 'utf-8', function (err, data) {
                // 判断用户名密码
                let count = 0   // 记录数据比对成功的次数

                let data001 = fs.readFileSync('/www/wwwroot/myWeb/login/usersData.json', 'utf8')
                let data002 = JSON.parse(data001)

                for (var i = 0; i < data002.length; i++) {
                    if (data002[i].username == obj.username && data002[i].password == obj.passwd) {
                        count++
                    }
                }
                if (count == 0) { //数据比对成功次数为0，数据库无用户名密码信息
                    response.write('<script> alert("用户名或密码错误") </script>')
                    console.log('$$$$$ 登录请求结束，失败 $$$$$')
                } else {    //数据比对成功
                    response.write('<script> alert("登录成功") </script>')
                    console.log('$$$$$ 登录请求结束，成功 $$$$$')
                }
                response.end(data)
            })
        }
    }
    // 没有输入时默认返回index.html
    else {
        response.writeHead(200, { 'Content-Type': 'text/html' })
        fs.readFile('/www/wwwroot/myWeb/login/index.html', 'utf-8', function (err, data) {
            console.log('***** 默认请求结束 *****')
            response.end(data)
        })
    }
})